iT邦幫忙

2023 iThome 鐵人賽

DAY 11
0
Software Development

軟體開發 - 程式不是會跑就好系列 第 11

【Day-11】其他軟體開發原則(簡介)

  • 分享至 

  • xImage
  •  

文章同步於blog

前言

今天我們來簡單介紹SOLID以外的兩個軟體開發原則
分別是DRY以及KISS

DRY

DRY,意旨Don't Repeat Yourself,也就是不要重複你自己
這非常的簡單,也就是少做重複的部分
我們可以將重複的部分將他轉換為共用的function在來使用
但絕對絕對不是不可以有任何重複的部分
而是指在相同的邏輯上,不要去重複使用

KISS

KISS, 意旨Keep It Simple, Stupid
KISS 原則的目標是確保軟體設計和開發過程不會變得過於困難,並降低錯誤和問題的風險。
這核心的概念就是,我們要將程式碼的邏輯盡可能的保持其他人一看就懂
在濃縮一下就是 - 大道至簡

There should be one-- and preferably only one --obvious way to do it.

  • The Zen of Python

當你發現你的Code需要一而再再而三的向其他人解釋時,你最好還是重構比較好

例如說今天我們要判斷email是不是符合格式
比起用一大堆條件判斷,倒不如直接寫個正規表達式一行把它結束掉

import re

def validate_email_with_regex(email):
    pattern = r'^[a-zA-Z0-9]+@[a-zA-Z0-9]+\.com$'
    if re.match(pattern, email):
        return True
    return False

不使用正規表達式,87%就會看到一大堆if-else在上面了...

參考資料

Wiki
Kent Beck 的四個簡單程式設計原則


上一篇
【Day-10】依賴反向原則(DIP)
下一篇
【Day-12】單元測試
系列文
軟體開發 - 程式不是會跑就好30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Hell Kiki
iT邦新手 4 級 ‧ 2023-09-11 12:16:05

忘了不曉得在哪看過,正規表示式其實是非常ugly,所以建議搭配好的註解說明正規表達示在驗什麼,最好再加上幾個範例

看更多先前的回應...收起先前的回應...
Bug Maker iT邦新手 4 級 ‧ 2023-09-11 16:59:23 檢舉

對不懂正規表示式的人的確是看不到是什麼鬼東西的一串字 XD

沒錯,如果不想解釋那麼多的話就把註解寫下去
雖然對於部分人,他們會覺得是看不懂的人的錯

正規表達式要寫長真的可以非常長,使他難以維護

但另一個更重要的事就是寫單元測試,相當於樓主說的範例
真的看不懂註解、程式碼的人
去執行過單元測試之後也有機會了解他實際上怎麼運作

Hell Kiki iT邦新手 4 級 ‧ 2023-09-12 08:12:25 檢舉

我覺得就算懂的人還是要花很大的力氣去看懂 /images/emoticon/emoticon06.gif,因為一般會放的可能不是身份證這種簡單版的,就像email:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

假設不幸要寫那麼長,那我還是那句老話。
寫單元測試,把例子寫上去

測試寫上去,寫得好大家也大概知道你想幹嘛
沒寫測試大概就會聽到一秒40句髒話了XD

不過不論是哪種寫法,通常會考慮到團隊其他人的屬性或是規定
就看團隊如何決定

我要留言

立即登入留言